package fashttpDemo

import (
	"github.com/valyala/fasthttp"
	"io"
	"os"
)

func FasthttpService() {
	fasthttp.ListenAndServe(":8080", UploadHandler)
}

func Resp(str string, ctx *fasthttp.RequestCtx) {
	ctx.WriteString(str)
}

func UploadHandler(ctx *fasthttp.RequestCtx) {
	//根据参数名获取上传的文件
	fileHeader, err := ctx.FormFile("file")
	if err != nil {
		Resp(err.Error(), ctx)
		return
	}
	//打开上传的文件
	file, err := fileHeader.Open()
	if err != nil {
		Resp(err.Error(), ctx)
		return
	}
	//使用完关闭文件
	defer file.Close()
	newFile := "d:\\bbb.txt" //windows下需要转移反斜线
	//新建一个文件，此处使用默认的txt格式
	nf, err := os.OpenFile(newFile, os.O_APPEND|os.O_CREATE|os.O_RDWR, 0666)
	if err != nil {
		Resp(err.Error(), ctx)
		return
	}
	//使用完需要关闭
	defer nf.Close()
	//复制文件内容
	_, err = io.Copy(nf, file)
	if err != nil {
		Resp(err.Error(), ctx)
		return
	}
	Resp("success", ctx)
}
